//
//  main.m
//  OpenGLTest
//
//  Created by wu di on 11-11-26.
//  Copyright 2011 UTS. All rights reserved.
//

#import <Cocoa/Cocoa.h>
#import <OpenGL/gl.h>
#import <GLUT/glut.h>

//
//First comment from vncserver

void init (void)
{
	GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 5.0 };
	GLfloat mat_shininess[] = { 50.0 };
	GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };

	glClearColor (0.0, 0.0, 0.0, 0.0);
	glShadeModel (GL_SMOOTH);

	glMaterialfv (GL_FRONT, GL_SPECULAR, mat_specular);
	glMaterialfv (GL_FRONT, GL_SHININESS, mat_shininess);
	glLightfv (GL_LIGHT0, GL_POSITION, light_position);

	glEnable (GL_LIGHTING);
	glEnable (GL_LIGHT0);
	glEnable (GL_DEPTH_TEST);
}


void display (void)
{
	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glutSolidSphere (1.0, 40, 50);
	glFlush ();
}


void reshape (int w, int h)
{
	glViewport (0, 0, (GLsizei) w, (GLsizei) h);
	glMatrixMode (GL_PROJECTION);
	glLoadIdentity ();
	if (w <= h)
		glOrtho (-1.5, 1.5, -1.5 * (GLfloat) h / (GLfloat) w,
		1.5 * (GLfloat) h / (GLfloat) w, -10.0, 10.0);
	else
		glOrtho (-1.5 * (GLfloat) w / (GLfloat) h,
		1.5 * (GLfloat) w / (GLfloat) h, -1.5, 1.5, -10.0, 10.0);
	glMatrixMode (GL_MODELVIEW);
	glLoadIdentity ();
}



void keyboard (unsigned char key, int x, int y)
{

	switch (key)
	{
	case 27:
		exit(0);
		break;
	}
}

int	main (int argc, char **argv)
{

	glutInit (&argc, argv);

	glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);

	glutInitWindowSize (300, 300);

	glutInitWindowPosition (100, 100);

	glutCreateWindow (argv[0]);

	init ();

	glutDisplayFunc (display);

	glutReshapeFunc (reshape);

	glutKeyboardFunc (keyboard);

	glutMainLoop ();
	return 0;
}

//int main(int argc, char *argv[])
//{
  
//    return NSApplicationMain(argc,  (const char **) argv);
//}
